package controllers;

import java.util.*;

import models.Periodo_Envio;
import models.Plantilla_Base;
import java.util.List;
import models.Docente;
import models.SemestreAcademico;
import play.Logger;
import play.mvc.Controller;
import play.mvc.Scope;
//import play.modules.excel.Excel.*;


public class dptoAcademico extends Controller {

    public static SemestreAcademico SA2 = new SemestreAcademico();

    public static void extraerPeriodo() {
        String mensaje = "";
        //Extraemos la fecha de inicio y fin del ciclo academico
        SemestreAcademico SA = SemestreAcademico.find("order by id DESC").first();
       
        if(SA==null){
            System.out.println("Esta Vacio.....");
            SA = new SemestreAcademico();
        }
         SA2 = SA;
        //extraemos los datos del ultimo periodo de envio
        Periodo_Envio PE = Periodo_Envio.find("order by id DESC").first();

        if (PE == null) {
            mensaje = "Aun no se han registrado semestres.";
            PE = new Periodo_Envio();
        }

        //extraemos el ultimo registro llenado por el Jefe de Departamento los datos del ultimo registro de Plantilla Base
        Plantilla_Base pUl = Plantilla_Base.find("order by id DESC").first();

        List<Plantilla_Base> PB = llenarPlantilla();
        if (pUl == null) {
            mensaje = "Aun no se han registrado semestres.";
            //PB = 
        } else {
            PB = Plantilla_Base.find("pla_iCodigo", pUl.pla_iCodigo).fetch();
            //Imprimimos el contenido de la lista  
            Plantilla_Base Temp = new Plantilla_Base();
            Iterator iter = PB.iterator();
            while (iter.hasNext()) {
                Temp = (Plantilla_Base) iter.next();
                System.out.println(Temp.dia_iId + "  " + Temp.pla_sElegido + Temp.pla_iCodigo + "  " + Temp.pla_iHoraInicioClases + "  " + Temp.pla_iHoraFinClases);
            }
           
        }
        
     
                
        
        System.out.println("Nombre "+SA.sem_vcNombre+ "  ini "+SA.getInicio() );

        Logger.info("Inicio");
        render(PB,PE,SA,mensaje);
        
    }
    

    public static void registrarPeriodo(Periodo_Envio PE) {
        PE.sem_nombre = SA2.sem_vcNombre;
        System.out.println("nom :" + PE.sem_nombre);
        System.out.println("ini " + PE.per_datFechaInicio);
        System.out.println("fin " + PE.per_datFechaFin);
        //show2(PE.id);
        PE.save();
        recargarPeriodo();
        //extraerPeriodo(PE.id);
    }

 

    public static void recargarPeriodo() {
        extraerPeriodo();
    }

    public static void jefeDptoAcademico() {
        render();
    }

    private static List<Plantilla_Base> llenarPlantilla() {
        List<Plantilla_Base> tmp= new ArrayList<Plantilla_Base>();
        for (int i = 0; i < 7; i++) {
            tmp.add(new Plantilla_Base(123, "si", i, 7, 22));
        }
        return tmp;
    }
    
    //metodo que registra los dias y horas de Clases
public static void registrarDiasHorasClase(){
        long pos;
        //Extraemos el ultimo id de los cursos
        Plantilla_Base Temp = Plantilla_Base.find("order by id DESC").first();
        if(Temp!=null){
            pos = Temp.id + 1;
        }else{
            pos = 111;
        }
        
        
        Plantilla_Base PB;
        String s1,s2,s3;
        for(int i=0;i<7;i++){
            //Dia elegido
            s1 = params.get("dia["+i+"]");
            //Hora de inicio de las clases del día elegido
            s2 = params.get("ini_dia["+i+"]");
            //Hora de Fin de las clases del día elegido
            s3 = params.get("fin_dia["+i+"]");

                PB = new Plantilla_Base(pos,s1,i, Integer.parseInt(s2),Integer.parseInt(s3));
                
               // System.out.println("dia: ["+i+"]" + s1 +" cod: ["+pos+"]" +" Inicio "+ params.get("ini_dia["+i+"]")+ " Finaliza " + params.get("fin_dia["+i+"]"));
                PB.save();    
        }        
        
        recargarPeriodo();
    }
    
    public static void listaDocentes(){
        String mensaje = "exito";
          //Extraemos la fecha de inicio y fin del ciclo academico
        SemestreAcademico SA = SemestreAcademico.find("order by id DESC").first();
        SA2 = SA;
        if(SA==null){
            System.out.println("Esta Vacio.....");
            SA = new SemestreAcademico();
        }
        
        //extraemos los datos del Jefe de Departamento
        Docente JD = Docente.find("doc_vcCodigo","000000").first();
        
        
        List<Docente> DC = Docente.find("order by id DESC").fetch();
        if (DC == null) {
            mensaje = "Aun no se han registrado semestres.";
            //PB = 
        } else {
           
            //Imprimimos el contenido de la lista de Docentes 
            Docente Temp = new Docente();
            Iterator iter = DC.iterator();
            while (iter.hasNext()) {
                Temp = (Docente) iter.next();
                System.out.println(Temp.cat_vcNombre + "  " + Temp.doc_vcApellidoPaterno + Temp.doc_vcCodigo );
            }
           render(DC, mensaje,SA );
        }
    }
    
    public static void perfilJefe(){
         //Extraemos la fecha de inicio y fin del ciclo academico
        SemestreAcademico SA = SemestreAcademico.find("order by id DESC").first();
        SA2 = SA;
        if(SA==null){
            System.out.println("Esta Vacio.....");
            SA = new SemestreAcademico();
        }
        
        //extraemos los datos del Jefe de Departamento
        Docente JD = Docente.find("doc_vcCodigo","000000").first();
        
        render(JD,SA);
    }
    
    public static void modificarPerfil(String comentario){
         //Extraemos la fecha de inicio y fin del ciclo academico
        SemestreAcademico SA = SemestreAcademico.find("order by id DESC").first();
        SA2 = SA;
        if(SA==null){
            System.out.println("Esta Vacio.....");
            SA = new SemestreAcademico();
        }
        
        //extraemos los datos del Jefe de Departamento
        Docente JD = Docente.find("doc_vcCodigo","000000").first();
        
        render(JD,SA,comentario);
    }
    //Metodo que actualiza la Información del Perfil de Jefe de Departamento
    public static void actualizarPerfil(Docente JD, Long id){
        Docente docenteAnterior = Docente.findById(id);
        String comentario = "",contra1 = params.get("passNuevo1");
        validation.valid(JD);
        if(validation.hasErrors()){
            System.out.println("Se deben completar todos los campos");
        }
        if(docenteAnterior==null){
            System.out.println("No se pudo actualizar, semestre no encontrado.");
        }else { 
            if(docenteAnterior.doc_vcPassword.equals(params.get("passAnterior"))){
                if(contra1.equals(params.get("passNuevo2"))){
                    docenteAnterior.doc_vcPassword = params.get("passNuevo1");
                    docenteAnterior.doc_vcCorreo1= params.get("JD.doc_vcCorreo1");
                    docenteAnterior.doc_vcCorreo2= params.get("JD.doc_vcCorreo2");
                    docenteAnterior.doc_vcCorreo3= params.get("JD.doc_vcCorreo3");
                    docenteAnterior.doc_vcTelefono1= params.get("JD.doc_vcTelefono1");
                    docenteAnterior.doc_vcTelefono2= params.get("JD.doc_vcTelefono2");
                    docenteAnterior.doc_vcTelefono3= params.get("JD.doc_vcTelefono3");
                    docenteAnterior.save(); 
                    
                    comentario = "Se cambió los datos Satisfactoriamente";
                }else{
                    comentario = "La contraseña nueva no coincide";
                }
            }else 
                comentario = "Contaseña Anterior errada !";
        }
       modificarPerfil(comentario);
        
    }
    
    public static void buscarPalabra(String campo){
        //Extraemos datos del semestre Academico
        SemestreAcademico SA = SemestreAcademico.find("order by id DESC").first();
        SA2 = SA;
        if(SA==null){
            System.out.println("Esta Vacio.....");
            SA = new SemestreAcademico();
        }
          //extraemos los datos del Jefe de Departamento
        Docente JD = Docente.find("doc_vcCodigo","000000").first();
        
        List<Docente> encontrado = new ArrayList<Docente>();
        if(campo.equals("nombre")){
            encontrado =  Docente.find("doc_vcNombres",params.get("palabra")).fetch();
        }else if(campo.equals("apellido")){
            encontrado = Docente.find("doc_vcApellidoPaterno",params.get("palabra")).fetch();
            List<Docente> encontrado2 = Docente.find("doc_vcApellidoMaterno",params.get("palabra")).fetch();
            encontrado.addAll(encontrado2);
        }else if(campo.equals("codigo")){
            encontrado = Docente.find("doc_vcCodigo",params.get("palabra")).fetch();
        }
       renderTemplate("dptoAcademico/resultadobusqueda.html", encontrado,SA);    
    }
}